.. _computed_attributes: Вычисляемые атрибуты (computed attributes) ========================================== Вычисляемые атрибуты — это дополнительные поля, значения которых не хранятся в базе данных, а формируются динамически на основе других атрибутов записи или произвольной логики. Они позволяют расширить отображаемые в журнале данные без изменения модели данных. Вычисляемые атрибуты задаются в конфигурации журнала или отдельной колонки и могут использоваться в :ref:`форматтерах ` и :ref:`редакторах ` колонок. Есть два основных вида вычисляемых атрибутов: **Record Computed Attributes (R атрибуты)** — атрибуты, которые вычисляются для каждой записи; **Config Computed Attributes (C атрибуты)** — атрибуты, которые вычисляются глобально для конфига. Вычисляемые атрибуты могут быть описаны в области журнала или конкретной колонки: .. code-block:: json "computed": [ { "id": "someAttribute", "type": "script", "config": { "script": "return \"abcd\";" } } ] Для обращения к атрибутам из записи в конфиге можно использовать плейсхолдеры ``${…}``. Например: .. code-block:: json "computed": [ { "id": "someAttribute", "type": "script", "config": { "vars": { "documentDisplayName": "${?disp}" }, "script": "return \"abcd\" + vars.documentDisplayName;" } } ] При наличии в конфиге плейсхолдеров ``${…}`` атрибут автоматически становится R атрибутом. Использование computed атрибутов доступно в полях :ref:`Форматтер для колонки ` и :ref:`Редактор для колонки `. Доступ аналогичен доступу к атрибутам записи, но с префиксом ``$computed``. Например: .. code-block:: json "formatter": { "type": "value", "config": { "value": "${$computed.someAttribute}" } }, "computed": [ { "id": "someAttribute", "type": "script", "config": { "vars": { "documentDisplayName": "${?disp}" }, "script": "return \"abcd\" + vars.documentDisplayName;" } } ] Типы вычисляемых атрибутов --------------------------- .. list-table:: :widths: 5 40 5 :header-rows: 1 * - Тип - Конфиг - Примечание * - **script** - | ``vars: Object`` — переменные, которые будут доступны в скрипте | ``script: String`` — текст скрипта - | В контексте скрипта доступны: | **Records** | **_** — lodash библиотека | **vars** — переменные из конфига | **t** — функция для получения локализованного сообщения по ключу * - **value** - | ``value: Any`` — значение | Может быть выбрано несколько значений. -